1. Field of the Invention
The present invention relates to software applications. More specifically, the present invention relates to the performance analysis and logging of events generated in applications.
2. Description of Related Art
One operation in fine-tuning and troubleshooting of information systems, such as a computer application, is to measure the “performance” (time taken) to deliver a requested result from that system. Performance tools have been developed which measure certain events from an operating system perspective by measuring the time taken to process operations such as computations and I/O (Input/Output). Performance can also be measured within an application itself. For instance, a videoconferencing application may have a mechanism for collecting and presenting metrics regarding the number of frames per second displayed on the screen or the number of frames skipped (not displayed). Such performance analysis mechanisms are typically built into the executable code of the application. Thus, typically, applications that do not have performance measurement code already built-in, must either completely forgo much measurement or rely on a third-party measurement tool. Due to the peculiarities between the way in which different software applications execute, generic measurement tools lack usefulness. If not specifically prepared for the application much of the information is geared toward sampling at given intervals what the application is doing. This does not necessarily give information that the user may be looking for or is interested in. Typically, the user must wade through piles of useless or uninteresting data regarding performance and may thus be unable to pick out those metrics of greatest importance.
All performance tools must preferably be operating as close, in a system or network sense, to the measured entity to eliminate the added measurement noise of latency which may skew results. The latency in delivering data over a network between clients and server completely renders useless the measurement of the operations themselves. In a client-server environment, there is often no separable measurement of client from server and server from client in regard to operations. For instance, in database applications where a server is being accessed and queried or updated by a client, timing of server operations needs to be isolated from the latency of network transfer. Likewise, timing of client operations may also need to be isolated from the very same latency.
What is often measured is only the time to gather the data from the server, and often, this is performed on the server side. Often, when preferred on the client side, this puts additional processing load on the client which can in turn degrade the accuracy of the measurement. When such measurements deal only with data collection time (request and response) rather than also the display of results, they are burdensome to the client and from the standpoint of the user, irrelevant.
There is a need for a performance measurement tool that can work interoperably with third-party applications, which is application and platform independent, and can be quickly and easily initiated when necessary and shut down when not. There is also a need for a performance analysis system that allows measurement of selective operations of an application.